package com.AI.AIDemo.Demos.Web.Service.ServiceImpl;

import com.AI.AIDemo.Demos.Web.Service.AIDemoServer;
import org.dromara.easyai.function.ELu;
import org.dromara.easyai.function.ReLu;
import org.dromara.easyai.function.Sigmoid;
import org.dromara.easyai.function.Tanh;
import org.springframework.stereotype.Service;

/*
 * @Author:大力王
 * @Date:2025/4/27-27-13:31
 * 开始了
 */
@Service
public class AIDemoServerImpl implements AIDemoServer {
    /**
     * 获取sigmoid激活函数，常用于输出值域为(0,1)的线性层，饱和激活函数。
     * @return new Sigmoid();
     **/
    @Override
    public Sigmoid getTransFormer() {
        return new Sigmoid();
    }

    /**
     * 获取ReLu激活函数，常用于卷积层激活函数，非饱和激活函数，右方向发散左方向收敛。
     * @return new Tanh();
     **/
    @Override
    public Tanh getTanh() {
        return new Tanh();
    }

    /**
     * 获取ReLu激活函数，常用于卷积层激活函数，非饱和激活函数，右方向发散左方向收敛。优势是梯度损失小，缺点是有可能造成数值计算溢出，在网络较深时需注意归一化控制输出。
     * @return new ReLu();
     **/
    @Override
    public ReLu getReLu() {
        return new ReLu();
    }

    /**
     * 获取eLu激活函数，常用于卷积层激活函数，非饱和激活函数，右方向发散左方向收敛。
     * @return new ELu();
     **/
    @Override
    public ELu getELu(float a) {
        return new ELu(a);
    }
}
